linux 字体配置
·
字体配置中涉及到的几个名称
字体的几个“名字”:别被搞混了
一个字体在系统中可能有多个“名字”,它们分别是:
名称类型 | 实例 | 说明 |
---|---|---|
字体文件名 | JetBrainsMono-Regular.ttf | 文件系统中的名字, 不用于配置 |
字体族名(Family) | JetBrains Mono | 最重要的名字,用于 fc-match 和 Kitty 配置 |
字体样式名(Style) | Regular , Bold , Italic | 区分粗体、斜体等 |
完整字体名(Full Name) | JetBrains Mono Regular | 族名 + 样式,一般也不用于配置 |
用 fc-list 看看实际输出
先安装对应的字体
sudo apt install fonts-jetbrains-mono
使用fc-list 查看
fc-list | grep -i "jetbrains"
fc-list | grep -i "notosansmono"
输出可能类似:
/usr/share/fonts/JetBrainsMono/JetBrainsMono-Regular.ttf: JetBrains Mono:style=Regular
/usr/share/fonts/JetBrainsMono/JetBrainsMono-Bold.ttf: JetBrains Mono:style=Bold
解读:
- 路径:/usr/share/fonts/.../JetBrainsMono-Regular.ttf → 这是文件名
- 第一个名字:JetBrains Mono → 这是字体族名(Family) ✅(你要用的)
- style=Regular → 这是字体样式
✅ 所以你应该在 Kitty 中使用 font_family JetBrains Mono,而不是 JetBrainsMono-Regular.ttf
fc-match 用什么名字?用“字体族名”
fc-match "JetBrains Mono"
- ✅ 正确:使用 族名(JetBrains Mono)
- ❌ 错误:使用文件名(JetBrainsMono-Regular.ttf)或完整名(JetBrains Mono Regular) 输出示例:
- JetBrainsMono-Regular.ttf: "JetBrains Mono" "Regular"
- 这说明匹配成功。
使用fontconfig工具
apt install fontconfig
方法 1:用 fc-list 提取族名(推荐)
# 列出所有 JetBrains 字体的族名
fc-list : family | grep -i jetbrains
- 输出:
- JetBrains Mono
- → 你就用 JetBrains Mono 作为 font_family
方法 2:用 fc-match 验证是否能匹配
fc-match "JetBrains Mono"
如果返回 .ttf 文件路径,说明名字正确。
方法 3:查看字体详细信息(高级)
使用 fc-query 查看某个字体文件的元数据:
fc-query /usr/share/fonts/JetBrainsMono/JetBrainsMono-Regular.ttf | grep -i family
- 输出:
- family: "JetBrains Mono"
- familylang: "en"
- → 所以族名是 JetBrains Mono
🚫 常见错误用法(不要这样做)
- font_family JetBrainsMono-Regular.ttf
- font_family JetBrains Mono Regular
- font_family /usr/share/fonts/.../ttf
特殊情况:Nerd Fonts 补丁字体
Nerd Fonts 给字体加了图标支持,通常会修改族名。
例如:
fc-list | grep -i "nerd"
- 输出:
- ... FiraCode Nerd Font:style=Regular
- ... JetBrainsMono Nerd Font:style=Medium
✅ 正确配置:
- font_family FiraCode Nerd Font
- 注意:空格和大小写都要一致!
实用命令速查表
fc-list
# 格式:文件路径: 家族名, 完整名:style=样式
# 1. 列出所有字体族名(只显示 family)
fc-list : family
# 2. 搜索包含 "mono" 的字体族
fc-list : family | grep -i mono
# 3. 搜索 JetBrains 相关字体
fc-list : family | grep -i jetbrains
# 4. 验证某个字体是否可用
fc-match "Fira Code"
fc-match "JetBrains Mono"
# 5. 刷新字体缓存(安装新字体后)
fc-cache -fv
# 6
fc-list : family style
内部元数据名称
fc-scan /usr/share/fonts/truetype/jetbrains-mono/JetBrainsMono-Regular.ttf
fc-match monospace 的含义
monospace 是 fontconfig 定义的逻辑字体分类名
-
隐式属性匹配
- monospace是Fontconfig通过spacing属性自动识别的分类,而非字体元数据中的显式字段。当字体满足spacing=100(等宽)时,系统会将其归入monospace类别,但该标签不会出现在fc-list的原始输出中56。
-
验证方法
- 通过以下命令可查看字体的等宽属性:
fc-list :spacing=100 # 列出所有等宽字体
fc-list : family spacing | grep -B1 "100" # 显示家族名和间距属性
graph LR
A[应用程序请求<br>“monospace”字体] --> B[fontconfig 规则引擎]
B --> C{匹配规则库<br>/etc/fonts/conf.d}
C --> D[物理字体文件]
D --> E[返回实际字体路径]
fc-match -s monospace | head -n5
fc-match monospace |head -n1
# 查看完整的字体属性
fc-query /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc | grep -E 'family|style'
为什么这样设计?
- 抽象层价值:
- 应用程序只需请求 "monospace",不需知道具体字体
- 系统管理员可统一修改所有应用的等宽字体
- 多语言支持:
<!-- 针对中文的 monospace 优化 -->
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono CJK SC</family>
</prefer>
</alias>
- 字体回退机制: 当首选字体缺失字符时,自动回退到备选字体
其他主要的逻辑字体分类名
- serif(衬线体)
- 特征:字符末端带有装饰性衬线(如Times New Roman、宋体)。
- 用途:正文印刷、传统排版,提升长文本可读性13。
- 示例物理字体:
- Linux: DejaVu Serif, Liberation Serif
- Windows: Times New Roman
- macOS: Georgia
- sans-serif(无衬线体)
- 特征:无衬线,线条简洁(如Arial、微软雅黑)。
- 用途:屏幕显示、现代UI设计,适合标题和短文本134。
- 示例物理字体:
- Linux: DejaVu Sans, Noto Sans
- Windows: Arial
- macOS: Helvetica
- cursive(手写体)
- 特征:模拟手写风格,笔画连贯。
- 用途:艺术设计、个性化标题,不适用于长文本34。
- 示例物理字体:Comic Sans MS, Brush Script MT
- fantasy(装饰体)
- 特征:高度装饰性,风格多变(如海报字体)。
- 用途:海报、LOGO设计,强调视觉冲击34。
- 示例物理字体:Impact, Papyrus
- symbol(符号字体)
- 特征:包含特殊符号而非文字(如数学符号、图标)。
- 用途:数学公式、技术文档中的符号渲染13。
- 示例物理字体:Webdings, Symbol
思源字体
思源黑体,英文名为Source Han Sans,Google 称之为Noto Sans CJK,是一款由Adobe 和Google 共同开发的开源字体家族。它支持简体中文、繁体中文、日文和韩文,并且有多种字重,旨在为多语言环境提供一致的视觉体验。
思源字体和宋体、黑体的区别在于,思源字体是一个字体家族,包含了思源黑体和思源宋体,而宋体和黑体是两种常见的字体类型,各自都有不同的特点和应用场景。
主要区别
- 衬线:这是最主要的区别。宋体有衬线,黑体没有衬线.
- 风格:宋体更传统,黑体更现代.
- 应用场景:宋体常用于正文,黑体常用于标题和界面.
- 思源字体:思源字体家族提供了多种字重和对多种语言的支持,可以满足更广泛的需求.
具体含义如下:
- 思源:
- “思源”一词出自成语“饮水思源”,寓意对字体来源的尊重和对设计者的感谢。
- 黑体:
- 指字体风格,是一种无衬线字体,特点是字形简洁、现代,笔画粗细均匀,易于阅读。
- Source Han Sans:
- Adobe 公司对该字体的英文名称,属于Adobe 的Source 字体家族。
- Noto Sans CJK:
- Google 公司对该字体的名称,属于Google 的Noto 字体家族。“CJK”代表中文(Chinese)、日文(Japanese)和韩文(Korean),表示该字体支持这三种语言的统一表意文字。
总而言之,思源黑体/Source Han Sans/Noto Sans CJK 是一款由Adobe 和Google 合作开发的开源字体,以“饮水思源”命名,支持多种语言,具有简洁现代的设计风格,广泛应用于网页设计、印刷品、软件界面等领域。